# 变换数组
# 2025/5/23

"""
输入一个数组 a ，包含有 n 个元素 a1, a2, · · · , an 。对这个数组进行 m 次 变换，
每次变换会将数组 a 中的每个元素 ai 转换为 ai · bitCount(ai) 。
其中 bitCount(x) 表示数字 x 的二进制表示中 1 出现的次数，例如 bitCount(3) = 2 ， 因为 3 的二进制表示为 11 ，其中 1 出现了两次。
请输出变换之后的数组内容。

输入的第一行包含一个正整数 n ，表示数组 a 中的元素个数。
第二行包含 n 个整数 a1, a2, · · · , an ，相邻整数之间使用一个空格分隔。
第三行包含一个整数 m ，表示变换次数。
2
5 7
2

输出一行，包含 n 个整数，相邻整数之间使用一个空格分隔，表示变换之 后得到的数组 a 。
20 63
"""
from collections import Counter


def arr_transfer(m, arr):
    cache_map = {}

    def bit_count(n: int):
        if cache_map.get(n, False):
            return cache_map[n]

        bin_s = str(bin(n))
        counter = Counter(bin_s)
        cnt = counter.get("1", 0)
        cache_map[n] = cnt
        return cnt

    for _ in range(m):
        for idx, num in enumerate(arr):
            num = num * bit_count(num)
            arr[idx] = num

    arr = list(map(str, arr))
    ans = " ".join(arr)

    return ans


if __name__ == '__main__':
    n = int(input())
    arr = list(map(int, input().split()))
    m = int(input())
    print(arr_transfer(m, arr))
